package com.zzyl.service;

import com.zzyl.base.PageBean;
import com.zzyl.dto.LoginDto;
import com.zzyl.dto.PasswordDto;
import com.zzyl.dto.UserDto;
import com.zzyl.vo.LoginVo;
import com.zzyl.vo.UserVo;

import java.util.List;

/**
 * 用户表服务类
 */
public interface UserService {

    /**
     * 后台用户登录
     *
     * @param dto 用户登录Dto
     * @return {@code LoginVo }
     * @author YiSheep
     */
    LoginVo login(LoginDto dto);

    /**
     * 用户分页
     *
     * @param dto      用户Dto
     * @param pageNum  书籍页码
     * @param pageSize 页面大小
     * @return {@code PageBean<UserVo> }
     * @author YiSheep
     */
    PageBean<UserVo> pageQuery(UserDto dto, Integer pageNum, Integer pageSize);

    /**
     * 用户添加
     *
     * @param dto 用户Dto
     * @author YiSheep
     */
    void userAdd(UserDto dto);

    /**
     * 用户修改
     *
     * @param dto 用户Dto
     * @author YiSheep
     */
    void userUpdate(UserDto dto);

    /**
     * 删除用户
     *
     * @param userIds 用户ID
     * @author YiSheep
     */
    void userDelete(Long userIds);

    /**
     * 启用或禁用用户
     *
     * @param id     用户ID
     * @param status 状态
     * @author YiSheep
     */
    void enableOrDisable(Long id, String status);


    /**
     * 用户列表
     *
     * @param dto 用户Dto
     * @return {@code List<UserVo> }
     * @author YiSheep
     */
    List<UserVo> list(UserDto dto);

    /**
     * 密码重置
     *
     * @param userId 用户id
     * @author YiSheep
     */
    void resetPasswords(Long userId);

    /**
     * 密码校验
     *
     * @param dto 密码Dto
     * @author YiSheep
     */
    void cmodifyPasswords(PasswordDto dto);

    /**
     * 个人信息
     *
     * @return {@code UserVo }
     * @author YiSheep
     */
    UserVo getCurrentUser();

    /**
     * 修改密码
     *
     * @param dto 密码dto
     * @author YiSheep
     */
    void modifyPasswords(PasswordDto dto);
}
